The proliferation of processor and memory constrained devices, e.g., mobile telephones, personal digital assistants, car navigation systems, printers, cameras, and appliances, and the practice of transferring applets containing fonts, e.g., Flash and Java, on-demand over the Internet have demonstrated shortcomings of existing font representations.
These processor and memory constraints pose a particular problem when scripts include a large number of characters. Large high quality font sets require large amounts of memory and are slow to process. As shown in Table 1, Chinese, Japanese, and Korean (CJK) scripts contain many more characters than Latin scripts.
TABLE 1Number of CharactersCharacter Set224Latin-17,043Japanese (Kanji)7,580Simplified Chinese13,860Traditional Chinese17,142Korean18,267Traditional Chinese with HongKong Character Set
FIG. 1A shows a Chinese character represented with a conventional expressive outline font. The outline font uses straight and curved line segments that form closed contours. Outline fonts are difficult to support on memory and processor constrained devices, Conventional methods that are used to render high quality outline characters require considerable CPU resources and the memory footprint of these fonts is large.
Bitmap representations also require too much memory on memory constrained devices. Furthermore, monochromatic bitmaps are not anti-aliased, bitmaps are not scalable, and hand tuning bitmaps is very labor intensive.
To optimize memory usage, uniform width stroke fonts can be used. These fonts typically group sets of strokes, a.k.a. radicals or graphemes, which are commonly repeated in Chinese characters throughout a font, as a single simple shape that is then reused across characters.
FIG. 1B shows a Chinese character represented with a conventional uniform width stroke font, which requires significantly less memory (˜250 KB), but fails to reflect the rich brushed style of Chinese writing, and therefore lacks cultural acceptance.
Stylized Stroke Fonts (SSFs) are enhanced stroke-based fonts whose strokes have variable thickness and stylistic stroke ends—see “An Improved Representation for Stroke-based Fonts”, SIGGRAPH 2006 Conference Abstracts and Applications, Elena J. Jakubiak, Ronald N. Perry, and Sarah F. Frisken. SSFs employ a modular structure that leverages the repetition of shape within a font, enabling SSFs to match the expressiveness of outline fonts with a memory footprint comparable to current uniform width stroke fonts.
In order for SSFs to be a viable alternative to outline fonts, a collection of SSFs is needed that matches the variety offered by outline fonts. Unfortunately, creating a single SSF CJK font from scratch can take man-years of work. Consequently, there is a need for a method for automatically converting CJK glyphs from conventional outline representations (e.g., TrueType fonts) to SSFs.
An effective method for converting CJK outline fonts to stylized stroke fonts (SSFs) must require minimal human input, e.g., to tune parameters or edit failed conversions, and must be able to automatically detect conversion failures.
Moreover, the conversion process needs to be accurate enough that the time to correct conversion failures is significantly less than the time to create the SSF from scratch. It is an object of the invention to convert an outline font to an SSF automatically, and to provide editing and diagnostic tools that enable a font designer to quickly correct any poorly converted characters.
Prior art approaches for creating CJK fonts and reducing memory requirements include creating characters from core components, using parametric descriptions of characters, exploiting repetition of shapes to compress existing outline fonts, and designing radicalized uniform width stroke fonts.
A core set of about ten basic strokes are used to write all Chinese characters. Groups of these basic strokes are repeatedly used across many characters. Consequently, one approach for streamlining font creation and reducing memory requirements is to create fonts from a basic set of strokes or stroke groups. However, this constructive approach lacks the ability to represent important style subtleties due to a stroke's location within a character that ensure spatial balance and harmony, which are important for general cultural acceptance.
Another approach uses a set of geometric equations to mathematically define the parts of a stroke or character. These mathematically designed characters also have the potential to minimize creation time and to reduce memory requirements. However, font designers are specialized artists who design in terms of balance and harmony. To quote Donald Knuth, “ . . . asking an artist to become enough of a mathematician to understand how to write a font with 60 parameters is too much,” Knuth, 1986, The METAFONTbook, Addison-Wesley. Thus, outline fonts continue to prevail.
Attempts to compress outline representations have achieved on the order of 25% compression, but these savings are still insufficient. Therefore, font foundries have developed uniform width stroke fonts that are represented by simplified centerlines, as opposed to outlines, and that reuse stroke groups throughout the font. These fonts require significantly less memory (e.g., 250 KB for the standard Guojia Biaozhun (GB) 2312 Simplified Chinese character set with 7,663 characters), but the characters are simplistic and fail to reflect the rich brushed style of CJK characters.